import {
    getProductDetail,
    getProductCode,
    collectAdd,
    collectDel,
    postCartAdd
} from '../../api/store.js';
import {
    getUserInfo,
    userShare
} from '../../api/user.js';
import {
    getCoupons,
    setFormId
} from '../../api/api.js';
import {
    getCartCounts
} from '../../api/order.js';
import WxParse from '../../wxParse/wxParse.js';
import util from '../../utils/util.js';
import wxh from '../../utils/wxh.js';

const app = getApp();

Page({

    /**
     * 页面的初始数据
     */
    data: {
        parameter: {
            'navbar': '1',
            'return': '1',
            'title': '商品详情'
        },
        attribute: {
            'cartAttr': false
        }, //属性是否打开
        coupon: {
            'coupon': false,
            list: [],
        },
        attr: '请选择', //属性页面提示
        attrValue: '', //已选属性
        animated: false, //购物车动画
        id: 0, //商品id
        replyCount: 0, //总评论数量
        reply: [], //评论列表
        storeInfo: {}, //商品详情
        storeDetail: '',
        productAttr: [], //组件展示属性
        productValue: [], //系统属性
        couponList: [], //优惠券
        productSelect: {}, //属性选中规格
        cart_num: 1, //购买数量
        isAuto: false, //没有授权的不会自动授权
        iShidden: true, //是否隐藏授权
        isOpen: false, //是否打开属性组件
        isLog: app.globalData.isLog, //是否登录
        actionSheetHidden: true,
        posterImageStatus: false,
        storeImage: '', //海报产品图
        PromotionCode: '', //二维码图片
        canvasStatus: false, //海报绘图标签
        posterImage: '', //海报路径
        posterbackgd: '/images/posterbackgd.png',
        sharePacket: {
            isState: true, //默认不显示
        }, //分销商详细
        uid: 0, //用户uid
        circular: false,
        autoplay: false,
        interval: 3000,
        duration: 500,
        clientHeight: "",
        systemStore: {}, //门店信息
        good_list: [],
        isDown: true,
        is_exchange: 0,
        isshare: 0, //isshare = 0,表示不是从分享进入, isshare = 1 表示是从分享进入
        order_id: 0,
        location: '',
        where: {
            longitude: '',
            latitude: '',
            district: ''
        },
        collect:false
    },
    /**
     * 登录后加载
     * 
     */
    onLoadFun: function(e) {
        this.setData({
            isLog: true
        });
        this.getCartCount();
        this.downloadFilePromotionCode();
        this.getUserInfo();
        this.get_product_collect();
        this.getGoodsDetails();
    },
    allowFun: function() {
        util.getlocation(this);
    },
    ChangCouponsClone: function() {
        this.setData({
            'coupon.coupon': false
        });
    },
    go_top: function() {
        if (wx.pageScrollTo) {
            wx.pageScrollTo({
                scrollTop: 0
            })
        } else {
            wx.showModal({
                title: '提示',
                content: '当前微信版本过低，无法使用该功能，请升级到最新微信版本后重试。'
            })
        }

    },
    /*
     * 获取用户信息
     */
    getUserInfo: function() {
        var that = this;
        getUserInfo().then(res => {
            var integral = res.data.integral
            that.setData({
                'sharePacket.isState': res.data.is_promoter ? false : true,
                uid: res.data.uid,
                integral: integral
            });
        });
    },
    /**
     * 购物车数量加和数量减
     * 
     */
    ChangeCartNum: function(e) {
        //是否 加|减
        var changeValue = e.detail;
        //获取当前变动属性
        var productSelect = this.data.productValue[this.data.attrValue];
        //如果没有属性,赋值给商品默认库存
        if (productSelect === undefined && !this.data.productAttr.length) productSelect = this.data.productSelect;
        //不存在不加数量
        if (productSelect === undefined) return;
        //提取库存
        var stock = productSelect.stock || 0;
        //限购数量
        var num = this.data.storeInfo.num;
        //设置默认数据
        if (productSelect.cart_num == undefined) productSelect.cart_num = 1;
        //数量+
        if (changeValue) {
            productSelect.cart_num++;
            //大于库存时,等于库存
            // if (num > 0) {
            //     if (productSelect.cart_num > num) {
            //         productSelect.cart_num = num;
            //         this.setData({
            //             ['productSelect.is_on']: true,
            //         });
            //     }
            // } else {
            console.log(stock)
            if (productSelect.cart_num > stock) productSelect.cart_num = stock;
            // }
            this.setData({
                ['productSelect.cart_num']: productSelect.cart_num,
                cart_num: productSelect.cart_num
            });
        } else {
            //数量减
            productSelect.cart_num--;
            //小于1时,等于1
            if (productSelect.cart_num < 1) productSelect.cart_num = 1;
            this.setData({
                ['productSelect.cart_num']: productSelect.cart_num,
                cart_num: productSelect.cart_num
            });
        }
    },
    /**
     * 属性变动赋值
     * 
     */
    ChangeAttr: function(e) {
        var values = e.detail;
        var productSelect = this.data.productValue[values];
        var storeInfo = this.data.storeInfo;
        if (productSelect) {
            this.setData({
                ["productSelect.image"]: productSelect.image,
                ["productSelect.price"]: productSelect.price,
                ["productSelect.stock"]: productSelect.stock,
                ['productSelect.unique']: productSelect.unique,
                ['productSelect.cart_num']: 1,
                attrValue: values,
                attr: '已选择'
            });
        } else {
            this.setData({
                ["productSelect.image"]: storeInfo.image,
                ["productSelect.price"]: storeInfo.price,
                ["productSelect.stock"]: 0,
                ['productSelect.unique']: '',
                ['productSelect.cart_num']: 0,
                attrValue: '',
                attr: '请选择'
            });
        }
    },
    /**
     * 领取完毕移除当前页面领取过的优惠券展示
     */
    ChangCoupons: function(e) {
        var coupon = e.detail;
        var couponList = util.ArrayRemove(this.data.couponList, 'id', coupon.id);
        this.setData({
            couponList: couponList
        });
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {
        this.setData({
            navH: app.globalData.navHeight
        });
        if (options.isshare == 1) {
            this.setData({
                'isshare': options.isshare,
                'order_id': options.order_id ? options.order_id : 0
            })
        }
        //扫码携带参数处理
        if (options.scene) {
            var value = util.getUrlParams(decodeURIComponent(options.scene));
            if (value.id) options.id = value.id;
            //记录推广人uid
            if (value.pid) {
                app.globalData.spid = value.pid;
                this.setData({
                    'isshare': 1,
                    spread_uid: value.pid
                })
            }
        }
        if (!options.id) return app.Tips({
            title: '缺少参数无法查看商品'
        }, {
            tab: 3,
            url: 1
        });
        this.setData({
            id: options.id
        });

        //记录推广人uid
        if (options.spid) {
            app.globalData.spid = options.spid;
            this.setData({
                spread_uid: options.spid
            });
        }
        console.log(this.data.spread_uid)
        this.getGoodsDetails();
    },
    setClientHeight: function() {
        if (!this.data.good_list.length) return;
        var query = wx.createSelectorQuery().in(this);
        query.select("#list").boundingClientRect();
        var that = this;
        query.exec(function(res) {
            that.setData({
                clientHeight: res[0].height + 20
            });
        });
    },
    /**
     * 获取产品详情
     * 
     */
    getGoodsDetails: function(Selectstatus = false) {
        console.log(app.globalData.userInfo)
        var that = this;
        getProductDetail(that.data.id).then(res => {
            var integralRatio = res.data.integralRatio //积分
            var is_exchange = res.data.is_exchange
            var storeInfo = res.data.storeInfo;
            var good_list = res.data.good_list || [];
            var count = Math.ceil(good_list.length / 6);
            var goodArray = new Array();
            for (var i = 0; i < count; i++) {
                var list = good_list.slice(i * 6, 6);
                if (list.length) goodArray.push({
                    list: list
                });
            }
            var storeDetailArray = [];
            for (var i = 0; i < storeInfo.store_detail.length; i++) {
                var str = storeInfo.store_detail[i].split(":");
                storeDetailArray.push(str);
            }
            var beyond = res.data.storeInfo.beyond
            if (storeInfo.is_spread == 0) {
                that.data.spread_uid = '';
            }
            if (app.globalData.userInfo.is_promoter == 0 && storeInfo.is_spread == 1) {
                that.setData({
                    share_hidden: true,
                    disabled: true,
                    opacity: '0.4',
                    collect:true
                })
                wx.hideShareMenu();
            }

            that.setData({
                storeInfo: storeInfo,
                storeDetail: storeDetailArray,
                reply: res.data.reply ? [res.data.reply] : [],
                replyCount: res.data.replyCount,
                description: storeInfo.description,
                replyChance: res.data.replyChance,
                productAttr: res.data.productAttr,
                productValue: res.data.productValue,
                ["sharePacket.priceName"]: res.data.priceName,
                ['parameter.title']: storeInfo.store_name,
                systemStore: res.data.system_store,
                good_list: goodArray,
                is_exchange: is_exchange,
                integralRatio: integralRatio
            });
            that.downloadFilestoreImage();
            if (Selectstatus != true) {
                that.DefaultSelect();
            }
            that.setClientHeight();
            if (res.data.storeInfo.is_benefit == 1 || res.data.storeInfo.is_hot == 1) {
                this.setData({
                    disabled: true,
                    opacity: '0.4'
                })
            }
            //html转wxml
            WxParse.wxParse('description', 'html', that.data.description, that, 0);
        }).catch(err => {
            //状态异常返回上级页面
            return app.Tips({
                title: err.toString()
            }, {
                tab: 3,
                url: 1
            });
        })
    },
    goPages: function(e) {
        wx.navigateTo({
            url: 'pages/goods_details/index?id=' + e.currentTarget.dataset.id
        });
    },
    /**
     * 拨打电话
     */
    makePhone: function() {
        wx.makePhoneCall({
            phoneNumber: this.data.systemStore.phone
        })
    },
    /**
     * 打开地图
     * 
     */
    showMaoLocation: function() {
        if (!this.data.systemStore.latitude || !this.data.systemStore.longitude) return app.Tips({
            title: '缺少经纬度信息无法查看地图！'
        });
        wx.openLocation({
            latitude: parseFloat(this.data.systemStore.latitude),
            longitude: parseFloat(this.data.systemStore.longitude),
            scale: 8,
            name: this.data.systemStore.name,
            address: this.data.systemStore.address + this.data.systemStore.detailed_address,
            success: function() {

            },
        });
    },
    /**
     * 默认选中属性
     * 
     */
    DefaultSelect: function() {
        var productAttr = this.data.productAttr,
            storeInfo = this.data.storeInfo;
        for (var i = 0, len = productAttr.length; i < len; i++) {
            if (productAttr[i].attr_value[0]) productAttr[i].checked = productAttr[i].attr_value[0]['attr'];
        }
        var value = this.data.productAttr.map(function(attr) {
            return attr.checked;
        });
        var productSelect = this.data.productValue[value.sort().join(',')];
        if (productSelect) {
            this.setData({
                ["productSelect.store_name"]: storeInfo.store_name,
                ["productSelect.image"]: productSelect.image,
                ["productSelect.price"]: productSelect.price,
                ["productSelect.stock"]: productSelect.stock,
                ['productSelect.unique']: productSelect.unique,
                ['productSelect.cart_num']: 1,
                attrValue: value,
                attr: '已选择'
            });
        } else {
            this.setData({
                ["productSelect.store_name"]: storeInfo.store_name,
                ["productSelect.image"]: storeInfo.image,
                ["productSelect.price"]: storeInfo.price,
                ["productSelect.stock"]: this.data.productAttr.length ? 0 : storeInfo.stock,
                ['productSelect.unique']: '',
                ['productSelect.cart_num']: this.data.productAttr.length ? 0 : 1,
                attrValue: '',
                attr: '请选择'
            });
        }
        this.setData({
            productAttr: productAttr
        });
    },
    /**
     * 获取是否收藏
     */
    get_product_collect: function() {
        var that = this;
        getProductDetail(that.data.id).then(res => {
            that.setData({
                'storeInfo.userCollect': res.data.storeInfo.userCollect
            });
        });
    },
    /**
     * 获取优惠券
     * 
     */
    getCouponList() {
        var that = this;
        getCoupons({
            page: 1,
            limit: 10
        }).then(res => {
            var couponList = [];
            for (var i = 0; i < res.data.length; i++) {
                if (!res.data[i].is_use && couponList.length < 2) couponList.push(res.data[i]);
            }
            that.setData({
                ['coupon.list']: res.data,
                couponList: couponList
            });
        });
    },
    /** 
     * 
     * 
     * 收藏商品
     */
    setCollect: function() {
        if (app.globalData.isLog === false) {
            this.setData({
                isAuto: true,
                iShidden: false,
            });
        } else {
            var that = this;
            if (this.data.storeInfo.userCollect) {
                collectDel(this.data.storeInfo.id).then(res => {
                    that.setData({
                        ['storeInfo.userCollect']: !that.data.storeInfo.userCollect
                    })
                })
            } else {
                collectAdd(this.data.storeInfo.id).then(res => {
                    that.setData({
                        ['storeInfo.userCollect']: !that.data.storeInfo.userCollect
                    })
                })
            }
        }
    },
    /**
     * 打开属性插件
     */
    selecAttr: function() {
        if (app.globalData.isLog === false)
            this.setData({
                isAuto: true,
                iShidden: false
            })
        else
            this.setData({
                'attribute.cartAttr': true,
                isOpen: true
            })
    },
    /**
     * 打开优惠券插件
     */
    coupon: function() {
        if (app.globalData.isLog === false)
            this.setData({
                isAuto: true,
                iShidden: false
            })
        else {
            this.getCouponList();
            this.setData({
                'coupon.coupon': true
            })
        }
    },
    onMyEvent: function(e) {
        this.setData({
            'attribute.cartAttr': e.detail.window,
            isOpen: false
        })
    },
    /**
     * 打开属性加入购物车
     * 
     */
    joinCart: function(e) {
        var formId = e.detail.formId;
        //是否登录
        if (app.globalData.isLog === false)
            this.setData({
                isAuto: true,
                iShidden: false,
            });
        else {
            setFormId(formId);
            this.goCat();
        }
    },
    /*
     * 加入购物车
     */
    goCat: function(isPay) {
        var that = this;
        // if (that.data.beyond != 1) {
        //     return app.Tips({
        //         title: '超出配送范围'
        //     });
        // }
        var productSelect = this.data.productValue[this.data.attrValue];
        //打开属性
        if (this.data.attrValue) {
            //默认选中了属性，但是没有打开过属性弹窗还是自动打开让用户查看默认选中的属性
            this.setData({
                'attribute.cartAttr': !this.data.isOpen ? true : false
            })
        } else {
            if (this.data.isOpen)
                this.setData({
                    'attribute.cartAttr': true
                })
            else
                this.setData({
                    'attribute.cartAttr': !this.data.attribute.cartAttr
                });
        }
        //只有关闭属性弹窗时进行加入购物车
        if (this.data.attribute.cartAttr === true && this.data.isOpen == false) return this.setData({
            isOpen: true
        });
        //如果有属性,没有选择,提示用户选择
        if (this.data.productAttr.length && productSelect === undefined && this.data.isOpen == true) return app.Tips({
            title: '请选择属性'
        });
        location = wx.getStorageSync('location');
        console.log(location.location.lng)

        postCartAdd({
            productId: that.data.id,
            cartNum: that.data.cart_num,
            uniqueId: productSelect !== undefined ? productSelect.unique : '',
            'new': isPay === undefined ? 0 : 1,
            'longitude': isPay ? location.location.lng : '',
            'latitude': isPay ? location.location.lat : '',
            'district': isPay ? location.address_component.district : '',
        }).then(res => {
            that.setData({
                isOpen: false,
                'attribute.cartAttr': false
            });
            if (isPay)
                wx.navigateTo({
                    url: '/pages/order_confirm/index?cartId=' + res.data.cartId + '&pink_pid=' +
                        that.data.order_id + '&spread_uid=' + that.data.spread_uid
                });
            else
                app.Tips({
                    title: '添加购物车成功',
                    icon: 'success'
                }, function() {
                    that.getCartCount(true);
                });
        }).catch(err => {
            return app.Tips({
                title: err
            });
        });
    },
    /**
     * 获取购物车数量
     * @param boolean 是否展示购物车动画和重置属性
     */
    getCartCount: function(isAnima) {
        var that = this;
        getCartCounts().then(res => {
            that.setData({
                CartCount: res.data.count
            });
            app.globalData.cart_count = res.data.count.toString();
            //加入购物车后重置属性
            if (isAnima) {
                that.setData({
                    animated: true,
                    attrValue: '',
                    attr: '请选择',
                    ["productSelect.image"]: that.data.storeInfo.image,
                    ["productSelect.price"]: that.data.storeInfo.price,
                    ["productSelect.stock"]: that.data.storeInfo.stock,
                    ['productSelect.unique']: '',
                    ['productSelect.cart_num']: 1,
                });
                that.selectComponent('#product-window').ResetAttr();
                setTimeout(function() {
                    that.setData({
                        animated: false
                    });
                }, 500);
            }
        });
    },
    /**
     * 立即购买
     */
    goBuy: function(e) {
        var that = this,
            formId = e.detail.formId;
        if (app.globalData.isLog === false)
            this.setData({
                isAuto: true,
                iShidden: false
            });
        else {
            setFormId(formId);
            this.goCat(true);
        }
    },
    /**
     * 分享打开和关闭
     * 
     */
    listenerActionSheet: function() {
        if (app.globalData.isLog === false)
            this.setData({
                isAuto: true,
                iShidden: false
            });
        else
            this.setData({
                actionSheetHidden: !this.data.actionSheetHidden
            })
    },
    //隐藏海报
    posterImageClose: function() {
        this.setData({
            posterImageStatus: false,
        })
    },
    //替换安全域名
    setDomain: function(url) {
        url = url ? url.toString() : '';
        //本地调试打开,生产请注销
        // return url;
        if (url.indexOf("https://") > -1) return url;
        else return url.replace('http://', 'https://');
    },
    //获取海报产品图
    downloadFilestoreImage: function() {
        var that = this;
        wx.downloadFile({
            url: that.setDomain(that.data.storeInfo.image),
            success: function(res) {
                that.setData({
                    storeImage: res.tempFilePath
                })
            },
            fail: function() {
                return app.Tips({
                    title: ''
                });
                that.setData({
                    storeImage: '',
                })
            },
        });
    },
    /**
     * 获取产品分销二维码
     * @param function successFn 下载完成回调
     * 
     */
    downloadFilePromotionCode: function(successFn) {
        var that = this;
        getProductCode(this.data.id).then(res => {
            wx.downloadFile({
                url: that.setDomain(res.data.code),
                success: function(res) {
                    that.setData({
                        isDown: false
                    });
                    if (typeof successFn == 'function')
                        successFn && successFn(res.tempFilePath);
                    else
                        that.setData({
                            PromotionCode: res.tempFilePath
                        });
                },
                fail: function() {
                    that.setData({
                        isDown: false
                    });
                    that.setData({
                        PromotionCode: ''
                    });
                },
            });
        }).catch(err => {
            that.setData({
                isDown: false
            });
            that.setData({
                PromotionCode: ''
            });
        });
    },
    /**
     * 生成海报
     */
    goPoster: function() {
        var that = this;
        that.setData({
            canvasStatus: true
        });
        var arr2 = [that.data.posterbackgd, that.data.storeImage, that.data.PromotionCode];
        if (that.data.isDown) return app.Tips({
            title: '正在下载海报,请稍后再试！'
        });
        wx.getImageInfo({
            src: that.data.PromotionCode,
            fail: function(res) {
                return app.Tips({
                    'title': '小程序二维码需要发布正式版后才能获取到'
                });
            },
            success() {
                if (arr2[2] == '') {
                    //海报二维码不存在则从新下载
                    that.downloadFilePromotionCode(function(msgPromotionCode) {
                        arr2[2] = msgPromotionCode;
                        if (arr2[2] == '') return app.Tips({
                            title: '海报二维码生成失败！'
                        });
                        util.PosterCanvas(arr2, that.data.storeInfo.store_name, that.data.storeInfo.price, function(tempFilePath) {
                            that.setData({
                                posterImage: tempFilePath,
                                posterImageStatus: true,
                                canvasStatus: false,
                                actionSheetHidden: !that.data.actionSheetHidden
                            })
                        });
                    });
                } else {
                    //生成推广海报
                    util.PosterCanvas(arr2, that.data.storeInfo.store_name, that.data.storeInfo.price, function(tempFilePath) {
                        that.setData({
                            posterImage: tempFilePath,
                            posterImageStatus: true,
                            canvasStatus: false,
                            actionSheetHidden: !that.data.actionSheetHidden
                        })
                    });
                }
            },
        });
    },
    /*
     * 保存到手机相册
     */
    savePosterPath: function() {
        var that = this;
        wx.getSetting({
            success(res) {
                if (!res.authSetting['scope.writePhotosAlbum']) {
                    wx.authorize({
                        scope: 'scope.writePhotosAlbum',
                        success() {
                            wx.saveImageToPhotosAlbum({
                                filePath: that.data.posterImage,
                                success: function(res) {
                                    that.posterImageClose();
                                    app.Tips({
                                        title: '保存成功',
                                        icon: 'success'
                                    });
                                },
                                fail: function(res) {
                                    app.Tips({
                                        title: '保存失败'
                                    });
                                }
                            })
                        }
                    })
                } else {
                    wx.saveImageToPhotosAlbum({
                        filePath: that.data.posterImage,
                        success: function(res) {
                            that.posterImageClose();
                            app.Tips({
                                title: '保存成功',
                                icon: 'success'
                            });
                        },
                        fail: function(res) {
                            app.Tips({
                                title: '保存失败'
                            });
                        },
                    })
                }
            }
        })
    },
    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function() {
        var that = this;
        that.setData({
            actionSheetHidden: !that.data.actionSheetHidden
        });
        userShare();
        return {
            title: that.data.storeInfo.store_name || '',
            imageUrl: that.data.storeInfo.image || '',
            path: '/pages/goods_details/index?id=' + that.data.id + '&spid=' + that.data.uid + '&isshare=' + 1,
        }
    },
    backHome: function() {
        wx.reLaunch({
            url: '/pages/index/index'
        })
    },
    onShow: function() {
        var that = this;
        var pages = getCurrentPages();
        var prevPage = pages[pages.length - 2]; //上一页
        prevPage.setData({
            prize_id: that.data.id
        })
    }
})